package java_groovy;

import javax.script.*;
import java.io.FileReader;
public class AJava {

    public String get(){
        return "java";
    }

    public static void main(String[] args) {

        // 创建一个groovy对象的实例
//        AGroovy instance = new AGroovy();
//        // 调用闭包的方法
//        Object result = instance.useClosure(2,x-> System.out.println(2));

        //JSR233是JVM和脚本语言的一个桥梁,java6开始已经内置了JSR233
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine groovy = scriptEngineManager.getEngineByName("groovy");
        try {
            groovy.eval("println '执行groovy脚本'");
            //执行脚本文件,需要绝对路径
            String path = System.getProperty("user.dir") + "\\src\\java_groovy\\groovy.groovy";
            //windows需要反斜杠
            String newPath = path.replace("\\","\\\\");
            System.out.println(newPath);
            //直接使用引擎传递参数
            groovy.put("name","houzheng");
            groovy.eval(new FileReader(newPath));
            //使用Bindings接口传递参数,此接口继承了map
            SimpleBindings simpleBindings = new SimpleBindings();//Bindings接口的实现
            simpleBindings.put("name","姚振");
            groovy.eval(new FileReader(newPath),simpleBindings);
            //还可以使用引擎创建Bindings
            //Bindings bindings = groovy.createBindings();//添加参数
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
